From: Florian Müllner Date: Tue, 4 Feb 2020 01:35:43 +0000 (+0100) Subject: status/system: Fix session submenu visibility X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~781^2^2~33 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=a205f4e2493e9c84bffba6837ee26554b537396f;p=gnome-shell.git status/system: Fix session submenu visibility Commit 147a743d8d7 moved the suspend and power-off actions into the submenu that contains the log-out and switch-user actions, but did not update the submenu visibility logic to account for the additional actions. As a result, the submenu is hidden when log-out and switch-user are unavailable (like on the login screen), even if suspend and power-off are enabled. https://gitlab.gnome.org/GNOME/gnome-shell/issues/2169 --- diff --git a/js/ui/status/system.js b/js/ui/status/system.js index 195e9a1c8..279ebcf0c 100644 --- a/js/ui/status/system.js +++ b/js/ui/status/system.js @@ -20,9 +20,13 @@ class Indicator extends PanelMenu.SystemIndicator { this._createSubMenu(); this._loginScreenItem.connect('notify::visible', - () => this._updateMultiUser()); + () => this._updateSessionSubMenu()); this._logoutItem.connect('notify::visible', - () => this._updateMultiUser()); + () => this._updateSessionSubMenu()); + this._suspendItem.connect('notify::visible', + () => this._updateSessionSubMenu()); + this._powerOffItem.connect('notify::visible', + () => this._updateSessionSubMenu()); // Whether shutdown is available or not depends on both lockdown // settings (disable-log-out) and Polkit policy - the latter doesn't // notify, so we update the menu item each time the menu opens or @@ -33,7 +37,7 @@ class Indicator extends PanelMenu.SystemIndicator { this._systemActions.forceUpdate(); }); - this._updateMultiUser(); + this._updateSessionSubMenu(); Main.sessionMode.connect('updated', this._sessionUpdated.bind(this)); this._sessionUpdated(); @@ -43,11 +47,12 @@ class Indicator extends PanelMenu.SystemIndicator { this._settingsItem.visible = Main.sessionMode.allowSettings; } - _updateMultiUser() { - let hasSwitchUser = this._loginScreenItem.visible; - let hasLogout = this._logoutItem.visible; - - this._sessionSubMenu.visible = hasSwitchUser || hasLogout; + _updateSessionSubMenu() { + this._sessionSubMenu.visible = + this._loginScreenItem.visible || + this._logoutItem.visible || + this._suspendItem.visible || + this._powerOffItem.visible; } _createSubMenu() {